
#ifndef _TTG_SERVICES_EVENTTYPES_
#define _TTG_SERVICES_EVENTTYPES_
#include "Common/Definitions.h"

//This file contains events for publishers, which cannot be visible directly.

namespace ttg
{
	namespace services
	{
		//Base class for all events. For inheritance.
		class Event
		{
			public:
				virtual ~Event() {};
		};

		//Happens when world updates all.
		class UpdateEvent :public Event
		{
			private:
				float step;
			public:
				UpdateEvent(float step);
				float getStep() const;
		};

		//Happens when user' ship is destroyed.
		class OnUserDestroyEvent :public Event
		{
			//nothing
		};

		//Happens when all halts.
		class OnExitEvent :public Event
		{
			private:
				int code;
			public:
				inline OnExitEvent(int code)
						{ this->code = code;  }
				inline int getCode() const
						{ return code; }
		};
	}
}

#endif
